<note>Cette documentation est réalisée sur la base d'ubuntu hardy mais elle est valable et utilisable sur beaucoup d'autres distributions</note>
Tags : {{tag>recherche_ligne_commande catfish deskbar cron optimisation}}

====== locate (mlocate) ======

===== Pourquoi faire =====

Dans un terminal, //locate// permet de localiser immédiatement n'importe quel fichier ou répertoire présent sur votre système (y compris les fichiers cachés).

A la différence de la commande //find//, //locate// va vous donner le résultat de votre recherche immédiatement. find offre cependant beaucoup plus de possibilités

//locate// est en fait un fichier lien vers le programme //mlocate//

===== Principe =====

//locate// est rapide parce qu'au lieu de parcourir toute l'arborescence du système (comme le fait find), c'est une base de donnée qui contient la liste de tous les fichiers et répertoires qui va fournir le résultat de la recherche.

Cette base de donnée est mise à jour quotidiennement grâce au programme //anacron//

<note tip>//anacron// est un programme qui permet l'exécution de tâches quotidiennes, hebdomadaires ou mensuelles sur un système de type Unix.
</note>

Sur un PC allumé 24h/24, la base de donnée est updatée chaque jour à 7h30. Sinon si la tâche n'a pu être réalisée à l'heure prévue, c'est 5 minutes après avoir démarré le PC que l'update de cette base sera fait (vous voyez votre voyant disque dur s'activiter pendant 1 ou 2 minutes)

//locate// indexe tout le système de fichiers, un utilisateur pourra connaître le contenu de dossiers dont il n'a pas les droits. Si cet aspect vous gène, il faudra remplacer mlocate par slocate.

plutôt que de relire l'ensemble du contenu de tous les répertoires chaque fois que la base de données est mise à jour, //locate// conserve des informations d'horodatage dans sa base de données de telle sorte qu'il puisse savoir si le contenu d'un répertoire a changé sans le relire. Cela rend les mises à jour plus rapides et sollicite moins le disque dur. Cette fonctionnalité est uniquement disponible dans mlocate.

Les adeptes de l'hibernation ou de la mise en veille doivent mettre à jour la base de donnée manuellement pour pouvoir utiliser //locate// car dans ce cas, le PC ne fonctionne pas à l'heure de la mise à jour et ne passe pas par l'étape du redémarrage. 

===== Installation =====

locate est installé normalement de base sur ubuntu sinon : 
   sudo apt-get install mlocate

L'installation de mlocate modifiera le binaire ///usr/bin/locate// pour pointer sur mlocate via le mécanisme des alternatives. Après l'installation, vous devriez exécuter /etc/cron.daily/mlocate manuellement pour créer la base de données, sinon mlocate ne fonctionnera pas avant que cron ne l'ait exécuté une première fois.

la base de donnée se trouve ici : ///var/lib/mlocate/mlocate.db//

Un fichier script //mlocate// est placé dans /etc/cron.daily pour être exécuté chaque jour
===== Fonctionnement =====
==== Utilisation de locate ====

Rechercher par exemple le fichier ".profile"

   locate .profile

Rechercher tous les fichiers mp3 (en majuscules et minuscules) en affichant page par page
   locate -i mp3 | less

=== Mise à jour manuellement de la base de donnée ====

   sudo updatedb

==== Modification de l'heure de l'exécution de la mise à jour ====

<note important>Ceci oblige de modifier l'heure d'exécution de anacron donc ce seront toutes les tâches executées par anacron qui seront executées à l'heure de votre choix</note>

Modifier le fichier /etc/cron.d/anacron

Original :
   30 7    * * *   root	test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null

Pour passer l'execution à 5h45 du matin :
   45 5    * * *   root	test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null


Sites relatifs 
[[http://packages.ubuntu.com/fr/intrepid/anacron|anacron]]


Auteur : [[utilisateurs/sylvainsjc]]

Contributeurs : 